﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GraphBase.Interfaces;
using SchemaGraph.Interfaces.Edges;

namespace SchemaGraph.Interfaces.Vertexes
{
    public interface IDatatypeVertex : IVertex
    {
        string Name { get; }

        /// <summary>
        /// Returns true if this vertex is derived from the parent vertex
        /// </summary>
        /// <param name="parent"></param>
        /// <returns></returns>
        bool IsDerivedFrom(IDatatypeVertex parent);

        /// <summary>
        /// Returns true if this a list type or derived from a list type.
        /// </summary>
        /// <returns></returns>
        bool IsListType();

        /// <summary>
        /// Returns the parent edges
        /// </summary>
        /// <returns></returns>
        IEnumerable<IDerivationEdge> GetParentEdges();

        /// <summary>
        /// Returns the children edges.
        /// </summary>
        /// <returns></returns>
        IEnumerable<IDerivationEdge> GetChildEdges();
    }
}
